package com.foftact.etfposition.service;

import com.foftact.etfposition.ETFBlock;

import java.util.Date;
import java.util.List;

/**
 * ETF行业配置服务接口
 */
public interface ETFBlockService {
    /**
     * 抓取并保存ETF行业配置数据
     * @return 抓取并保存的记录数
     */
    int fetchAndSaveETFBlockData();

    /**
     * 保存单条ETF行业配置数据
     * @param etfBlock ETF行业配置数据对象
     * @return 保存的行数
     */
    int saveETFBlock(ETFBlock etfBlock);

    /**
     * 批量保存ETF行业配置数据
     * @param etfBlocks ETF行业配置数据列表
     * @return 保存的行数
     */
    int batchSaveETFBlock(List<ETFBlock> etfBlocks);

    /**
     * 根据板块代码和报告日期获取ETF行业配置数据
     * @param blockCode 板块代码
     * @param reportDate 报告日期
     * @return ETF行业配置数据对象
     */
    ETFBlock getETFBlockByBlockCodeAndReportDate(String blockCode, Date reportDate);

    /**
     * 根据报告日期获取ETF行业配置数据列表
     * @param reportDate 报告日期
     * @return ETF行业配置数据列表
     */
    List<ETFBlock> getETFBlocksByReportDate(Date reportDate);

    /**
     * 获取指定日期范围内的ETF行业配置数据
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return ETF行业配置数据列表
     */
    List<ETFBlock> getETFBlocksByDateRange(Date startDate, Date endDate);

    /**
     * 获取所有ETF行业配置数据
     * @return ETF行业配置数据列表
     */
    List<ETFBlock> getAllETFBlocks();

    /**
     * 删除超过指定天数的数据
     * @param days 天数
     * @return 删除的行数
     */
    int deleteOldData(int days);

    /**
     * 计算并更新ETF行业配置数据
     * @param reportDate 报告日期
     * @return 更新的记录数
     */
    int calculateAndUpdateBlockRatio(Date reportDate);
}